var prefix = "/jzweb/trackDraw";
var isDrawing = null; // 标记是否正在进行抽签

let falg = false;
var timerId
var types = null
$(function() {
    load();
});

$(document).ready(function() {
    lottery()
});

function load() {
    $('#exampleTable')
        .bootstrapTable(
            {
                method : 'get', // 服务器数据的请求方式 get or post
                url : prefix + '/trackList', // 服务器数据的加载地址
                //	showRefresh : true,
                //	showToggle : true,
                //	showColumns : true,
                iconSize : 'outline',
                toolbar : '#exampleToolbar',
                theadClasses: "thead-dark",
                striped : true, // 设置为true会有隔行变色效果
                dataType : "json", // 服务器返回的数据类型
                // pagination : true, // 设置为true会在底部显示分页条
                singleSelect : false, // 设置为true将禁止多选
                // contentType : "application/x-www-form-urlencoded",
                // //发送到服务器的数据编码类型
                // pageSize : 10, // 如果设置了分页，每页数据条数
                // pageNumber : 1, // 如果设置了分布，首页页码
                //search : true, // 是否显示搜索框
                showColumns : false, // 是否显示内容下拉框（选择显示的列）
                // sidePagination : "server", // 设置在哪里进行分页，可选值为"client" 或者 "server"
                queryParamsType : "",
                // //设置为limit则会发送符合RESTFull格式的参数
                queryParams : function(params) {
                    return {
                        //说明：传入后台的参数包括offset开始索引，limit步长，sort排序列，order：desc或者,以及所有列的键值对
                        pageNumber : params.pageNumber,
                        pageSize : params.pageSize,
                        unitName:$('#unitName').val(),
                        // username:$('#searchName').val()
                    };
                },
                // //请求服务器数据时，你可以通过重写参数的方式添加一些额外的参数，例如 toolbar 中的参数 如果
                // queryParamsType = 'limit' ,返回参数必须包含
                // limit, offset, search, sort, order 否则, 需要包含:
                // pageSize, pageNumber, searchText, sortName,
                // sortOrder.
                // 返回false将会终止请求
                responseHandler : function(res){
                    if(res.code !== '0') {
                        layer.msg(res.msg);
                        return false
                    }
                    isDrawing = res.data.hasDraw
                    return {
                        "rows": res.data.trackDrawDOList //数据
                    };
                },
                columns : [
                    {
                        field : 'unitName',
                        title : '参赛院校'
                    },
                    {
                        field : 'name',
                        title : '参赛选手一'
                    },
                    {
                        field : 'placeNum',
                        title : 'B赛场序号',
                        class : 'placeNumB',
                        formatter : function(value, row, index) {
                            if(isDrawing) {
                                return  value
                            }
                            return '-'
                        }
                    },
                    {
                        field : 'track',
                        title : 'C赛场序号',
                        class : 'placeNumC',
                        formatter : function(value, row, index) {
                            if(isDrawing) {
                                return  value
                            }
                            return '-'
                        }
                    },
                    {
                        field : 'name2',
                        title : '参赛选手二',
                    },
                    {
                        field : 'placeNum2',
                        title : 'B赛场序号',
                        class : 'placeNumB',
                        formatter : function(value, row, index) {
                            let list =  sessionStorage.getItem('isDrawing')
                            if(isDrawing) {
                                return  value
                            }
                            return '-'
                        }
                    },
                    {
                        field : 'track2',
                        title : 'C赛场序号',
                        class : 'placeNumC',
                        formatter : function(value, row, index) {
                            let list =  sessionStorage.getItem('isDrawing')
                            if(isDrawing) {
                                return  value
                            }
                            return '-'
                        }
                    },
                ]
            });
}

function reLoad() {
    $('#exampleTable').bootstrapTable('refresh');
}

function add() {
    layer.open({
        type : 2,
        title : '增加',
        maxmin : true,
        shadeClose : false, // 点击遮罩关闭层
        area : [ '800px', '520px' ],
        content : prefix + '/add' // iframe的url
    });
}

function edit(id) {
    layer.open({
        type : 2,
        title : '编辑',
        maxmin : true,
        shadeClose : false, // 点击遮罩关闭层
        area : [ '800px', '520px' ],
        content : prefix + '/edit/' + id // iframe的url
    });
}


//导出
function downExcelModelFile() {
    layer.confirm('您确定要导出吗？', {
        btn1:function(index){
            if(!isDrawing) {
                layer.msg('请先完成抽签')
                layer.close(index);
                return
            }
            try {
                window.location.href = "/jzweb/trackDraw/downloadImportTemplate";
                layer.close(index)
            }catch (e) {
                layer.msg('导出失败')
            }

        }
    });


}

function trackDrawCreate() {
    $.ajax({
        type : "get",
        url : prefix +`/list?drawType=${types}`,
        async : false,
        error : function(request) {
            parent.layer.alert(request);
        },
        success : function(res) {
            if (res.code === '0') {
                $('#exampleTable').bootstrapTable('load',res.data)
                layer.msg('抽签完毕')
            } else {
                parent.layer.alert(res.msg)
            }

        }
    });
}

// 抽签
function lottery() {


    // B随机抽签
    $('#drawBButton').click(function() {
        let index = layer.confirm('确定开始B赛道抽签？', {
            btn: ['确定', '取消']
        }, function () {
            if(falg) {
                return layer.msg('抽签中')
            }
            timerId = setInterval(updateBNumbers, 100);
            types = 1
            isDrawing = true
            falg = true
            layer.close(index);
            // // 点击停止按钮结束抽签
        })

    });


    // C随机抽签
    $('#drawCButton').click(function() {
        let index = layer.confirm('确定开始C赛道抽签？', {
            btn: ['确定', '取消']
        }, function () {
            if(falg) {
                return layer.msg('抽签中')
            }
            timerId = setInterval(updateCNumbers,100);
            types = 2
            isDrawing = true
            falg = true
            layer.close(index);
            // // 点击停止按钮结束抽签
        })

    });

    $('#stopButton').click(async function() {
        let index = layer.confirm('确定停止抽签？', {
            btn: ['确定', '取消']
        }, function () {
            if(isDrawing) {
                if(falg) {
                    clearInterval(timerId);
                    trackDrawCreate()

                }else {
                    layer.msg('抽签已完成')
                }
            }
            falg = false
            layer.close(index);
        })
    });
}

// 更新序号
function updateBNumbers() {
    let rows = $('#exampleTable').bootstrapTable('getData'); // 获取表格数据
    let total = rows.length * 2
    if (rows.length === 0)  return layer.msg('暂无选手信息')
    var tableRows = $('#exampleTable tbody tr');
    tableRows.each(function(index, row) {
        var randomNumber = getRandomNumber(1, total);
        $(row).find('.placeNumB').text(randomNumber);
    });
}
function updateCNumbers() {
    let rows = $('#exampleTable').bootstrapTable('getData'); // 获取表格数据
    let total = rows.length * 2
    if (rows.length === 0)  return layer.msg('暂无选手信息')
    var tableRows = $('#exampleTable tbody tr');
    tableRows.each(function(index, row) {
        var randomNumber = getRandomNumber(1, total);
        $(row).find('.placeNumC').text(randomNumber);
    });
}


// 生成指定范围的随机数
function getRandomNumber(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}